Automatic Level Controllers (ALCs) and Limiters are used for controlling the dynamic range of a signal, usually, but not always, an audio signal. Typically, low level audio signals are boosted to improve audibility, and high-level signals are attenuated to prevent clipping i.e. distortion. ALCs/Limiters are often used in portable equipment with microphones so that sound sources which are a long way from the microphone are boosted to the same level as sound sources close to the microphone. In the rest of this specification, the term “dynamic range control” will be used to cover both ALC and Limiter functions.
Conventionally, dynamic range control was carried out using analogue circuitry but recently, digital implementations have grown in popularity. An audio system employing an ALC/Limiter is shown schematically in FIG. 1a, and a commonly used architecture for an ALC or Limiter in digital form is shown in FIG. 1b. In the system of FIG. 1a, the input audio signal is obtained as a series of sample words, for example of 16 or 24 bits, derived from a digital source 90 such as a CD player, digital microphone or analogue-to-digital converter (ADC). The ALC/Limiter 100 performs dynamic range control of the digital audio input signal, and may be followed by a digital-to-analogue converter (DAC) 110 to convert the signal back to analogue.
As depicted in FIG. 1b, the ALC/Limiter 100 has an Attack/Decay block 200, acting as a signal detector for determining the average or peak amplitude of the signal, followed by a Gain Control block 300. The Attack/Decay block 200, as the name suggests, controls the attack and decay times for the circuit, which controls the dynamics of the audio output signal. The input audio signal, as well as being supplied to the Attack/Decay 200 block, is also fed through a delay element 400 and the delayed signal is modified by the output of the gain control block 300 at a multiply stage 500, before being converted to an analogue signal by the Digital-to-Analogue Converter 110 of FIG. 1a, if necessary.
An implementation of the Attack/Decay block 200 is shown in FIG. 2, which is similar to that described in the following background reference [1]:
G. W. McNally, “Dynamic Range Control of Digital Audio Signals”, Journal Audio Engineering Society, Vol 32, No 5 May 1984.
The absolute magnitude (Abs) of the input audio signal In is first determined in block 202. The difference Diff between the output of the Abs block 202 and the output of an integrator 207 (formed by an output-side adder 208 and a delay element 210, the delay element 210 being denoted in FIG. 2 by z−1) is determined by feeding the output of the integrator 207 as a negative quantity to an input-side adder 204. The Attack/Decay block 200 is operable either in an attack mode or in decay mode, as determined by a bit shifter 206.
If the difference signal Diff is positive, this means that the input signal In is greater than the current output signal Out, therefore the Attack/Decay block 200 must enter the attack mode. In the attack mode, the difference signal Diff from adder 204 is multiplied by the attack coefficient Aft (shown in FIG. 2 as a simple shifter, for hardware simplicity), then added to the integrator 207. This causes the output level Out to increase at a rate determined by the attack coefficient Att. If the difference signal Diff is negative, the Attack/Decay block 200 enters the decay mode and the difference signal Diff is multiplied by the decay coefficient Dec. This causes the level of the output signal Out to decrease at the decay rate. Since the value added to the integrator 207 becomes smaller if the difference signal (Diff) is smaller, the value of the output signal Out converges to that of the input signal In with an exponential characteristic. The output signal Out is supplied to the Gain Control block 300 of FIG. 1b. 
Typical attack and decay times would be 2 ms/6 dB gain change and 1 s/6 dB gain change, respectively. Attack times are much faster than decay times to allow the ALC/Limiter to react quickly to sudden increases in the input signal level.
In FIG. 1b, the Gain Control block 300 uses lookup tables or equations to determine the correct gain to apply to the input signal. For example, in a Limiter application, a fixed gain K may be applied (with zero slope, R0) up to a certain input threshold value T, beyond which the gain is gradually reduced (with a negative slope, R1) to prevent clipping, as shown in FIG. 3.
An example of the basic configuration of the Gain Control block 300 is shown in FIG. 4. In FIG. 4, an input signal from the Attack/Decay block 200 is converted into the log-domain at 302 and a threshold value T is subtracted from the input signal in adder 304. The resulting signal is passed into a non-linear block 306 which applies unity gain for inputs above zero and a gain of zero for signals below zero. This means that an input signal at the threshold T or below (−24 dB) becomes a zero log-domain value, and an input signal above the threshold T is converted to a signal proportional to its amplitude above the threshold T. The signal output from the non-linear block 306 is multiplied by the gain LS in multiplier 308. The effect is, for an initial input signal below the threshold T (i.e. below −24 dB), to apply 0 dB gain, and for signals above the threshold T, to apply an attenuation proportional to the signal level relative to the threshold T. Finally, the signal output from the multiplier 308 is passed through an antilog converter 310 to yield the gain which is applied to the delayed audio input in multiplier block 500 (refer back to FIG. 1b).
The precise implementation of the gain control will depend on the functions such as ALC or compression to be performed.
A problem can occur if a low level signal is applied, followed by a high level signal. The following example relates to the gain curve of FIG. 3, for an attack rate of 2 ms/6 dB. When an input signal level of −30 dB is applied (i.e. below the threshold level T), a fixed gain of +18 dB is applied. If a 0 dB input signal is then applied, the gain will remain at 18 dB initially, but will then reduce at the attack rate of 2 ms/6 dB. Assuming that the maximum signal level at the output of the system is 0 dB, the signal will clip for 6 ms, i.e. until the gain is reduced to 0 dB. For an audio signal, this clipping will cause audible distortion. Moreover, such a large signal amplitude will consume a considerable amount of power, which in itself can be problematic in battery-powered apparatus such as a portable audio player or mobile telephone.
A known solution to the above problem is to provide a delay before applying the gain control, as in the architecture shown in FIG. 1b (see delay 400) which helps the ALC/Limiter adjust the gain signals before the clipping occurs. In other words, the input signal is held for a short time allowing the gain to start to reduce before this signal reaches the multiplier (500 in FIG. 1b). Unfortunately, to prevent clipping completely, in this example a delay of 6 ms is required. For a typical audio sample-rate of 44.1 kHz, this corresponds to 265 delays, i.e. the storage for 265 samples typically in 16-bit words, which would require significant memory and would thus, in an integrated circuit, require relatively significant silicon real-estate. Additionally, such a long delay is undesirable in many applications such as real-time processing.
Accordingly, it would be desirable to provide a dynamic range controller which prevents or minimises clipping without these drawbacks.